
package com.ys.chatserver.http.logic.dto;

import com.ys.chatserver.im.dto.MsgBodyRoot;
import com.ys.chatserver.im.dto.MsgType;

/**
 * 离线消息的数据包装传输类。
 * <p>
 * <b>此DTO传输的数据基本对应于数据库表“离线聊天记录/MISSU_OFFLINE_HISTORY”.</b>
 * 
 * @author Jack Jiang(http://www.52im.net/space-uid-1.html)
 * @since 4.3
 */
public class OfflineMsgDTO
{
	/** 消息发送人的用户id */
	protected String user_uid;
	/**
	 * 消息发送人的昵称。
	 * <p>
	 * 为何要把消息发送人的昵称取出来呢？原因是当用户取到离线消息前，可能已经把该好友从好友列表
	 * 中删除了，那么此条离线消息到达客户端时将自动以陌生人消息的形式显示出来（好友列表里没这个人了嘛），
	 * 此时这个昵称就有用了。
	 */
	protected String nickName = null;
	
	/** 消息接收人的用户id */
	protected String friend_user_uid;
	
	/** 
	 * 聊天消息类型.
	 * 
	 * @see MsgBodyRoot
	 */
	protected int msg_type;
	
	/** 
	 * 消息内容.
	 */
	protected String msg_content;
	
	/**
	 * 消息内容2.
	 * 
	 * <p>
	 * 目前用途：自2013-12-19日起，离线消息存放在本字段的是QoS的指纹码。
	 * 
	 * <p>
	 * 说明：目前本字段仅用在iOS端（详见ios端的说明字段）、Android端，Web端暂无需使用。
	 * 
	 * @since 4.4
	 */
	protected String msg_content2;
	
	/** 
	 * 消息发生时间戳。
	 * <p>
	 * 本时间戳为GMT标准时间，解决跨国跨时区问题，用于UI时客户端需要转换成自已
	 * 的时区后再使用哦，此字段存放的是java版无时区时间戳，形如：1510491984536） 。
	 */
	protected String history_time2;
	
	/** 
	 * 聊天模型类型。
	 * @see MsgBodyRoot
	 */
	protected String chat_type;
	
	/**
	 * 消息发生的群组id。
	 * <p>
	 * 本字段只在聊天类型为群组时有意义，否则它的值应该是null.
	 */
	protected String group_id;
	/**
	 * 消息发生的群组名称。
	 * <p>
	 * 本字段只在聊天类型为群组时有意义，否则它的值应该是null.
	 */
	protected String group_name;
	
	/** 
	 * 群聊消息扩散写前原始消息的指纹码。
	 * <p>
	 * 此指纹码目前主要用于消息“撤回”功能时。
	 * 且仅对由“人”发起的正常聊天消息有意义，对{@link MsgType#TYPE_SYSTEAM$INFO}类型的消息无意义。
	 * 
	 */
	protected String parent_fp;
	
	public String getUser_uid()
	{
		return user_uid;
	}

	public void setUser_uid(String user_uid)
	{
		this.user_uid = user_uid;
	}

	public String getNickName()
	{
		return nickName;
	}

	public void setNickName(String nickName)
	{
		this.nickName = nickName;
	}

	public String getFriend_user_uid()
	{
		return friend_user_uid;
	}

	public void setFriend_user_uid(String friend_user_uid)
	{
		this.friend_user_uid = friend_user_uid;
	}

	public int getMsg_type()
	{
		return msg_type;
	}

	public void setMsg_type(int msg_type)
	{
		this.msg_type = msg_type;
	}

	public String getMsg_content()
	{
		return msg_content;
	}

	public void setMsg_content(String msg_content)
	{
		this.msg_content = msg_content;
	}

//	public String getMsg_content2()
//	{
//		return msg_content2;
//	}
//
//	public void setMsg_content2(String msg_content2)
//	{
//		this.msg_content2 = msg_content2;
//	}

	public String getHistory_time2()
	{
		return history_time2;
	}

	public void setHistory_time2(String history_time2)
	{
		this.history_time2 = history_time2;
	}
	
	public String getHistoryTime2ForDefaultTimeZone()
	{
		return TimeToolKit.convertTimstampToDefaultTimeZone(history_time2, "MM-dd HH:mm");
	}
	
	public String getChat_type()
	{
		return chat_type;
	}

	public void setChat_type(String chat_type)
	{
		this.chat_type = chat_type;
	}

	public String getGroup_id()
	{
		return group_id;
	}

	public void setGroup_id(String group_id)
	{
		this.group_id = group_id;
	}
	
	public String getGroup_name()
	{
		return group_name;
	}

	public void setGroup_name(String group_name)
	{
		this.group_name = group_name;
	}
	
	public String getMsg_content2() {
		return msg_content2;
	}

	public void setMsg_content2(String msg_content2) {
		this.msg_content2 = msg_content2;
	}

	public String getParent_fp() {
		return parent_fp;
	}

	public void setParent_fp(String parent_fp) {
		this.parent_fp = parent_fp;
	}

	@Override
	public String toString()
	{
		return "OfflineMsgDTO[chat_type="+chat_type+", msg_type"+msg_type
				+", user_uid="+user_uid+", nickName="+nickName
				+", friend_user_uid="+friend_user_uid+", msg_content="+msg_content
				+", history_time2="+history_time2+", group_id="+group_id
				+", group_name="+group_name+", msg_content2="+this.msg_content2+", parent_fp="+parent_fp+"]";
	}
}
